#include <hxcpp.h>

#ifndef INCLUDED_cpp_CppInt32__
#include <cpp/CppInt32__.h>
#endif
#ifndef INCLUDED_haxe_Int64
#include <haxe/Int64.h>
#endif
namespace haxe{

Void Int64_obj::__construct(::cpp::CppInt32__ high,::cpp::CppInt32__ low)
{
{
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",34)
	this->high = high;
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",35)
	this->low = low;
}
;
	return null();
}

Int64_obj::~Int64_obj() { }

Dynamic Int64_obj::__CreateEmpty() { return  new Int64_obj; }
hx::ObjectPtr< Int64_obj > Int64_obj::__new(::cpp::CppInt32__ high,::cpp::CppInt32__ low)
{  hx::ObjectPtr< Int64_obj > result = new Int64_obj();
	result->__construct(high,low);
	return result;}

Dynamic Int64_obj::__Create(hx::DynamicArray inArgs)
{  hx::ObjectPtr< Int64_obj > result = new Int64_obj();
	result->__construct(inArgs[0],inArgs[1]);
	return result;}

::String Int64_obj::toString( ){
	HX_SOURCE_PUSH("Int64_obj::toString")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",39)
	if (((bool(::cpp::CppInt32___obj::isZero(this->high)) && bool(::cpp::CppInt32___obj::isZero(this->low))))){
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",40)
		return HX_CSTRING("0");
	}
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",41)
	::String str = HX_CSTRING("");
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",42)
	bool neg = false;
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",43)
	::haxe::Int64 i = hx::ObjectPtr<OBJ_>(this);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",44)
	if ((::cpp::CppInt32___obj::isNeg(i->high))){
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",45)
		neg = true;
		struct _Function_2_1{
			inline static ::haxe::Int64 Block( ::haxe::Int64 &i){
				{
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",46)
					::cpp::CppInt32__ high = ::cpp::CppInt32___obj::complement(i->high);
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",46)
					::cpp::CppInt32__ low = ::cpp::CppInt32___obj::neg(i->low);
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",46)
					if ((::cpp::CppInt32___obj::isZero(low))){
						HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",46)
						high = ::cpp::CppInt32___obj::add(high,::cpp::CppInt32___obj::ofInt((int)1));
					}
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",46)
					return ::haxe::Int64_obj::__new(high,low);
				}
				return null();
			}
		};
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",46)
		i = _Function_2_1::Block(i);
	}
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",48)
	::haxe::Int64 ten = ::haxe::Int64_obj::__new(::cpp::CppInt32___obj::ofInt((int)0),::cpp::CppInt32___obj::ofInt((int)10));
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",49)
	while((!(::cpp::CppInt32___obj::isZero(::cpp::CppInt32___obj::_or(i->high,i->low))))){
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",50)
		Dynamic r = ::haxe::Int64_obj::divMod(i,ten);
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",51)
		str = (::cpp::CppInt32___obj::toInt(r->__Field(HX_CSTRING("modulus"),true)->__Field(HX_CSTRING("low"),true)) + str);
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",52)
		i = r->__Field(HX_CSTRING("quotient"),true);
	}
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",54)
	if ((neg)){
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",54)
		str = (HX_CSTRING("-") + str);
	}
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",55)
	return str;
}


HX_DEFINE_DYNAMIC_FUNC0(Int64_obj,toString,return )

::haxe::Int64 Int64_obj::make( ::cpp::CppInt32__ high,::cpp::CppInt32__ low){
	HX_SOURCE_PUSH("Int64_obj::make")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",58)
	return ::haxe::Int64_obj::__new(high,low);
}


STATIC_HX_DEFINE_DYNAMIC_FUNC2(Int64_obj,make,return )

::haxe::Int64 Int64_obj::ofInt( int x){
	HX_SOURCE_PUSH("Int64_obj::ofInt")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",62)
	return ::haxe::Int64_obj::__new(::cpp::CppInt32___obj::ofInt((int(x) >> int((int)31))),::cpp::CppInt32___obj::ofInt(x));
}


STATIC_HX_DEFINE_DYNAMIC_FUNC1(Int64_obj,ofInt,return )

::haxe::Int64 Int64_obj::ofInt32( ::cpp::CppInt32__ x){
	HX_SOURCE_PUSH("Int64_obj::ofInt32")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",66)
	return ::haxe::Int64_obj::__new(::cpp::CppInt32___obj::shr(x,(int)31),x);
}


STATIC_HX_DEFINE_DYNAMIC_FUNC1(Int64_obj,ofInt32,return )

int Int64_obj::toInt( ::haxe::Int64 x){
	HX_SOURCE_PUSH("Int64_obj::toInt")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",71)
	if (((::cpp::CppInt32___obj::toInt(x->high) != (int)0))){
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",72)
		if ((::cpp::CppInt32___obj::isNeg(x->high))){
			struct _Function_3_1{
				inline static ::haxe::Int64 Block( ::haxe::Int64 &x){
					{
						HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",73)
						::cpp::CppInt32__ high = ::cpp::CppInt32___obj::complement(x->high);
						HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",73)
						::cpp::CppInt32__ low = ::cpp::CppInt32___obj::neg(x->low);
						HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",73)
						if ((::cpp::CppInt32___obj::isZero(low))){
							HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",73)
							high = ::cpp::CppInt32___obj::add(high,::cpp::CppInt32___obj::ofInt((int)1));
						}
						HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",73)
						return ::haxe::Int64_obj::__new(high,low);
					}
					return null();
				}
			};
			HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",73)
			return -(::haxe::Int64_obj::toInt(_Function_3_1::Block(x)));
		}
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",74)
		hx::Throw (HX_CSTRING("Overflow"));
	}
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",76)
	return ::cpp::CppInt32___obj::toInt(x->low);
}


STATIC_HX_DEFINE_DYNAMIC_FUNC1(Int64_obj,toInt,return )

::cpp::CppInt32__ Int64_obj::getLow( ::haxe::Int64 x){
	HX_SOURCE_PUSH("Int64_obj::getLow")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",79)
	return x->low;
}


STATIC_HX_DEFINE_DYNAMIC_FUNC1(Int64_obj,getLow,return )

::cpp::CppInt32__ Int64_obj::getHigh( ::haxe::Int64 x){
	HX_SOURCE_PUSH("Int64_obj::getHigh")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",83)
	return x->high;
}


STATIC_HX_DEFINE_DYNAMIC_FUNC1(Int64_obj,getHigh,return )

::haxe::Int64 Int64_obj::add( ::haxe::Int64 a,::haxe::Int64 b){
	HX_SOURCE_PUSH("Int64_obj::add")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",88)
	::cpp::CppInt32__ high = ::cpp::CppInt32___obj::add(a->high,b->high);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",89)
	::cpp::CppInt32__ low = ::cpp::CppInt32___obj::add(a->low,b->low);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",90)
	if (((::cpp::CppInt32___obj::ucompare(low,a->low) < (int)0))){
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",91)
		high = ::cpp::CppInt32___obj::add(high,::cpp::CppInt32___obj::ofInt((int)1));
	}
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",92)
	return ::haxe::Int64_obj::__new(high,low);
}


STATIC_HX_DEFINE_DYNAMIC_FUNC2(Int64_obj,add,return )

::haxe::Int64 Int64_obj::sub( ::haxe::Int64 a,::haxe::Int64 b){
	HX_SOURCE_PUSH("Int64_obj::sub")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",96)
	::cpp::CppInt32__ high = ::cpp::CppInt32___obj::sub(a->high,b->high);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",97)
	::cpp::CppInt32__ low = ::cpp::CppInt32___obj::sub(a->low,b->low);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",98)
	if (((::cpp::CppInt32___obj::ucompare(a->low,b->low) < (int)0))){
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",99)
		high = ::cpp::CppInt32___obj::sub(high,::cpp::CppInt32___obj::ofInt((int)1));
	}
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",100)
	return ::haxe::Int64_obj::__new(high,low);
}


STATIC_HX_DEFINE_DYNAMIC_FUNC2(Int64_obj,sub,return )

::haxe::Int64 Int64_obj::mul( ::haxe::Int64 a,::haxe::Int64 b){
	HX_SOURCE_PUSH("Int64_obj::mul")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",104)
	::cpp::CppInt32__ mask = ::cpp::CppInt32___obj::ofInt((int)65535);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",105)
	::cpp::CppInt32__ al = ::cpp::CppInt32___obj::_and(a->low,mask);
	::cpp::CppInt32__ ah = ::cpp::CppInt32___obj::ushr(a->low,(int)16);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",106)
	::cpp::CppInt32__ bl = ::cpp::CppInt32___obj::_and(b->low,mask);
	::cpp::CppInt32__ bh = ::cpp::CppInt32___obj::ushr(b->low,(int)16);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",107)
	::cpp::CppInt32__ p00 = ::cpp::CppInt32___obj::mul(al,bl);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",108)
	::cpp::CppInt32__ p10 = ::cpp::CppInt32___obj::mul(ah,bl);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",109)
	::cpp::CppInt32__ p01 = ::cpp::CppInt32___obj::mul(al,bh);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",110)
	::cpp::CppInt32__ p11 = ::cpp::CppInt32___obj::mul(ah,bh);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",111)
	::cpp::CppInt32__ low = p00;
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",112)
	::cpp::CppInt32__ high = ::cpp::CppInt32___obj::add(::cpp::CppInt32___obj::add(p11,::cpp::CppInt32___obj::ushr(p01,(int)16)),::cpp::CppInt32___obj::ushr(p10,(int)16));
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",113)
	p01 = ::cpp::CppInt32___obj::shl(p01,(int)16);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",113)
	low = ::cpp::CppInt32___obj::add(low,p01);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",113)
	if (((::cpp::CppInt32___obj::ucompare(low,p01) < (int)0))){
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",113)
		high = ::cpp::CppInt32___obj::add(high,::cpp::CppInt32___obj::ofInt((int)1));
	}
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",114)
	p10 = ::cpp::CppInt32___obj::shl(p10,(int)16);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",114)
	low = ::cpp::CppInt32___obj::add(low,p10);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",114)
	if (((::cpp::CppInt32___obj::ucompare(low,p10) < (int)0))){
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",114)
		high = ::cpp::CppInt32___obj::add(high,::cpp::CppInt32___obj::ofInt((int)1));
	}
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",115)
	high = ::cpp::CppInt32___obj::add(high,::cpp::CppInt32___obj::mul(a->low,b->high));
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",116)
	high = ::cpp::CppInt32___obj::add(high,::cpp::CppInt32___obj::mul(a->high,b->low));
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",117)
	return ::haxe::Int64_obj::__new(high,low);
}


STATIC_HX_DEFINE_DYNAMIC_FUNC2(Int64_obj,mul,return )

Dynamic Int64_obj::divMod( ::haxe::Int64 modulus,::haxe::Int64 divisor){
	HX_SOURCE_PUSH("Int64_obj::divMod")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",121)
	::haxe::Int64 quotient = ::haxe::Int64_obj::__new(::cpp::CppInt32___obj::ofInt((int)0),::cpp::CppInt32___obj::ofInt((int)0));
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",122)
	::haxe::Int64 mask = ::haxe::Int64_obj::__new(::cpp::CppInt32___obj::ofInt((int)0),::cpp::CppInt32___obj::ofInt((int)1));
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",123)
	divisor = ::haxe::Int64_obj::__new(divisor->high,divisor->low);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",124)
	while((!(::cpp::CppInt32___obj::isNeg(divisor->high)))){
		struct _Function_2_1{
			inline static int Block( ::haxe::Int64 &divisor,::haxe::Int64 &modulus){
				{
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",125)
					int v = ::cpp::CppInt32___obj::ucompare(divisor->high,modulus->high);
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",125)
					return (  (((v != (int)0))) ? int(v) : int(::cpp::CppInt32___obj::ucompare(divisor->low,modulus->low)) );
				}
				return null();
			}
		};
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",125)
		int cmp = _Function_2_1::Block(divisor,modulus);
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",126)
		divisor->high = ::cpp::CppInt32___obj::_or(::cpp::CppInt32___obj::shl(divisor->high,(int)1),::cpp::CppInt32___obj::ushr(divisor->low,(int)31));
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",127)
		divisor->low = ::cpp::CppInt32___obj::shl(divisor->low,(int)1);
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",128)
		mask->high = ::cpp::CppInt32___obj::_or(::cpp::CppInt32___obj::shl(mask->high,(int)1),::cpp::CppInt32___obj::ushr(mask->low,(int)31));
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",129)
		mask->low = ::cpp::CppInt32___obj::shl(mask->low,(int)1);
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",130)
		if (((cmp >= (int)0))){
			HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",130)
			break;
		}
	}
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",132)
	while((!(::cpp::CppInt32___obj::isZero(::cpp::CppInt32___obj::_or(mask->low,mask->high))))){
		struct _Function_2_1{
			inline static int Block( ::haxe::Int64 &modulus,::haxe::Int64 &divisor){
				{
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",133)
					int v = ::cpp::CppInt32___obj::ucompare(modulus->high,divisor->high);
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",133)
					return (  (((v != (int)0))) ? int(v) : int(::cpp::CppInt32___obj::ucompare(modulus->low,divisor->low)) );
				}
				return null();
			}
		};
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",133)
		if (((_Function_2_1::Block(modulus,divisor) >= (int)0))){
			HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",134)
			quotient->high = ::cpp::CppInt32___obj::_or(quotient->high,mask->high);
			HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",135)
			quotient->low = ::cpp::CppInt32___obj::_or(quotient->low,mask->low);
			HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",136)
			modulus = ::haxe::Int64_obj::sub(modulus,divisor);
		}
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",138)
		mask->low = ::cpp::CppInt32___obj::_or(::cpp::CppInt32___obj::ushr(mask->low,(int)1),::cpp::CppInt32___obj::shl(mask->high,(int)31));
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",139)
		mask->high = ::cpp::CppInt32___obj::ushr(mask->high,(int)1);
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",141)
		divisor->low = ::cpp::CppInt32___obj::_or(::cpp::CppInt32___obj::ushr(divisor->low,(int)1),::cpp::CppInt32___obj::shl(divisor->high,(int)31));
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",142)
		divisor->high = ::cpp::CppInt32___obj::ushr(divisor->high,(int)1);
	}
	struct _Function_1_1{
		inline static Dynamic Block( ::haxe::Int64 &quotient,::haxe::Int64 &modulus){
			{
				hx::Anon __result = hx::Anon_obj::Create();
				__result->Add(HX_CSTRING("quotient") , quotient,false);
				__result->Add(HX_CSTRING("modulus") , modulus,false);
				return __result;
			}
			return null();
		}
	};
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",144)
	return _Function_1_1::Block(quotient,modulus);
}


STATIC_HX_DEFINE_DYNAMIC_FUNC2(Int64_obj,divMod,return )

::haxe::Int64 Int64_obj::div( ::haxe::Int64 a,::haxe::Int64 b){
	HX_SOURCE_PUSH("Int64_obj::div")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",148)
	bool sign = ::cpp::CppInt32___obj::isNeg(::cpp::CppInt32___obj::_or(a->high,b->high));
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",149)
	if ((::cpp::CppInt32___obj::isNeg(a->high))){
		struct _Function_2_1{
			inline static ::haxe::Int64 Block( ::haxe::Int64 &a){
				{
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",149)
					::cpp::CppInt32__ high = ::cpp::CppInt32___obj::complement(a->high);
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",149)
					::cpp::CppInt32__ low = ::cpp::CppInt32___obj::neg(a->low);
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",149)
					if ((::cpp::CppInt32___obj::isZero(low))){
						HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",149)
						high = ::cpp::CppInt32___obj::add(high,::cpp::CppInt32___obj::ofInt((int)1));
					}
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",149)
					return ::haxe::Int64_obj::__new(high,low);
				}
				return null();
			}
		};
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",149)
		a = _Function_2_1::Block(a);
	}
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",150)
	if ((::cpp::CppInt32___obj::isNeg(b->high))){
		struct _Function_2_1{
			inline static ::haxe::Int64 Block( ::haxe::Int64 &b){
				{
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",150)
					::cpp::CppInt32__ high = ::cpp::CppInt32___obj::complement(b->high);
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",150)
					::cpp::CppInt32__ low = ::cpp::CppInt32___obj::neg(b->low);
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",150)
					if ((::cpp::CppInt32___obj::isZero(low))){
						HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",150)
						high = ::cpp::CppInt32___obj::add(high,::cpp::CppInt32___obj::ofInt((int)1));
					}
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",150)
					return ::haxe::Int64_obj::__new(high,low);
				}
				return null();
			}
		};
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",150)
		b = _Function_2_1::Block(b);
	}
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",151)
	::haxe::Int64 q = ::haxe::Int64_obj::divMod(a,b)->__Field(HX_CSTRING("quotient"),true);
	struct _Function_1_1{
		inline static ::haxe::Int64 Block( ::haxe::Int64 &q){
			{
				HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",152)
				::cpp::CppInt32__ high = ::cpp::CppInt32___obj::complement(q->high);
				HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",152)
				::cpp::CppInt32__ low = ::cpp::CppInt32___obj::neg(q->low);
				HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",152)
				if ((::cpp::CppInt32___obj::isZero(low))){
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",152)
					high = ::cpp::CppInt32___obj::add(high,::cpp::CppInt32___obj::ofInt((int)1));
				}
				HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",152)
				return ::haxe::Int64_obj::__new(high,low);
			}
			return null();
		}
	};
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",152)
	return (  ((sign)) ? ::haxe::Int64(_Function_1_1::Block(q)) : ::haxe::Int64(q) );
}


STATIC_HX_DEFINE_DYNAMIC_FUNC2(Int64_obj,div,return )

::haxe::Int64 Int64_obj::mod( ::haxe::Int64 a,::haxe::Int64 b){
	HX_SOURCE_PUSH("Int64_obj::mod")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",156)
	bool sign = ::cpp::CppInt32___obj::isNeg(::cpp::CppInt32___obj::_or(a->high,b->high));
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",157)
	if ((::cpp::CppInt32___obj::isNeg(a->high))){
		struct _Function_2_1{
			inline static ::haxe::Int64 Block( ::haxe::Int64 &a){
				{
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",157)
					::cpp::CppInt32__ high = ::cpp::CppInt32___obj::complement(a->high);
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",157)
					::cpp::CppInt32__ low = ::cpp::CppInt32___obj::neg(a->low);
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",157)
					if ((::cpp::CppInt32___obj::isZero(low))){
						HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",157)
						high = ::cpp::CppInt32___obj::add(high,::cpp::CppInt32___obj::ofInt((int)1));
					}
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",157)
					return ::haxe::Int64_obj::__new(high,low);
				}
				return null();
			}
		};
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",157)
		a = _Function_2_1::Block(a);
	}
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",158)
	if ((::cpp::CppInt32___obj::isNeg(b->high))){
		struct _Function_2_1{
			inline static ::haxe::Int64 Block( ::haxe::Int64 &b){
				{
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",158)
					::cpp::CppInt32__ high = ::cpp::CppInt32___obj::complement(b->high);
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",158)
					::cpp::CppInt32__ low = ::cpp::CppInt32___obj::neg(b->low);
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",158)
					if ((::cpp::CppInt32___obj::isZero(low))){
						HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",158)
						high = ::cpp::CppInt32___obj::add(high,::cpp::CppInt32___obj::ofInt((int)1));
					}
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",158)
					return ::haxe::Int64_obj::__new(high,low);
				}
				return null();
			}
		};
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",158)
		b = _Function_2_1::Block(b);
	}
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",159)
	::haxe::Int64 m = ::haxe::Int64_obj::divMod(a,b)->__Field(HX_CSTRING("modulus"),true);
	struct _Function_1_1{
		inline static ::haxe::Int64 Block( ::haxe::Int64 &m){
			{
				HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",160)
				::cpp::CppInt32__ high = ::cpp::CppInt32___obj::complement(m->high);
				HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",160)
				::cpp::CppInt32__ low = ::cpp::CppInt32___obj::neg(m->low);
				HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",160)
				if ((::cpp::CppInt32___obj::isZero(low))){
					HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",160)
					high = ::cpp::CppInt32___obj::add(high,::cpp::CppInt32___obj::ofInt((int)1));
				}
				HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",160)
				return ::haxe::Int64_obj::__new(high,low);
			}
			return null();
		}
	};
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",160)
	return (  ((sign)) ? ::haxe::Int64(_Function_1_1::Block(m)) : ::haxe::Int64(m) );
}


STATIC_HX_DEFINE_DYNAMIC_FUNC2(Int64_obj,mod,return )

::haxe::Int64 Int64_obj::shl( ::haxe::Int64 a,int b){
	HX_SOURCE_PUSH("Int64_obj::shl")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",163)
	return (  (((((int(b) & int((int)63))) == (int)0))) ? ::haxe::Int64(a) : ::haxe::Int64((  (((((int(b) & int((int)63))) < (int)32))) ? ::haxe::Int64(::haxe::Int64_obj::__new(::cpp::CppInt32___obj::_or(::cpp::CppInt32___obj::shl(a->high,b),::cpp::CppInt32___obj::ushr(a->low,((int)32 - ((int(b) & int((int)63)))))),::cpp::CppInt32___obj::shl(a->low,b))) : ::haxe::Int64(::haxe::Int64_obj::__new(::cpp::CppInt32___obj::shl(a->low,(b - (int)32)),::cpp::CppInt32___obj::ofInt((int)0))) )) );
}


STATIC_HX_DEFINE_DYNAMIC_FUNC2(Int64_obj,shl,return )

::haxe::Int64 Int64_obj::shr( ::haxe::Int64 a,int b){
	HX_SOURCE_PUSH("Int64_obj::shr")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",167)
	return (  (((((int(b) & int((int)63))) == (int)0))) ? ::haxe::Int64(a) : ::haxe::Int64((  (((((int(b) & int((int)63))) < (int)32))) ? ::haxe::Int64(::haxe::Int64_obj::__new(::cpp::CppInt32___obj::shr(a->high,b),::cpp::CppInt32___obj::_or(::cpp::CppInt32___obj::ushr(a->low,b),::cpp::CppInt32___obj::shl(a->high,((int)32 - ((int(b) & int((int)63)))))))) : ::haxe::Int64(::haxe::Int64_obj::__new(::cpp::CppInt32___obj::shr(a->high,(int)31),::cpp::CppInt32___obj::shr(a->high,(b - (int)32)))) )) );
}


STATIC_HX_DEFINE_DYNAMIC_FUNC2(Int64_obj,shr,return )

::haxe::Int64 Int64_obj::ushr( ::haxe::Int64 a,int b){
	HX_SOURCE_PUSH("Int64_obj::ushr")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",171)
	return (  (((((int(b) & int((int)63))) == (int)0))) ? ::haxe::Int64(a) : ::haxe::Int64((  (((((int(b) & int((int)63))) < (int)32))) ? ::haxe::Int64(::haxe::Int64_obj::__new(::cpp::CppInt32___obj::ushr(a->high,b),::cpp::CppInt32___obj::_or(::cpp::CppInt32___obj::ushr(a->low,b),::cpp::CppInt32___obj::shl(a->high,((int)32 - ((int(b) & int((int)63)))))))) : ::haxe::Int64(::haxe::Int64_obj::__new(::cpp::CppInt32___obj::ofInt((int)0),::cpp::CppInt32___obj::ushr(a->high,(b - (int)32)))) )) );
}


STATIC_HX_DEFINE_DYNAMIC_FUNC2(Int64_obj,ushr,return )

::haxe::Int64 Int64_obj::_and( ::haxe::Int64 a,::haxe::Int64 b){
	HX_SOURCE_PUSH("Int64_obj::and")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",175)
	return ::haxe::Int64_obj::__new(::cpp::CppInt32___obj::_and(a->high,b->high),::cpp::CppInt32___obj::_and(a->low,b->low));
}


STATIC_HX_DEFINE_DYNAMIC_FUNC2(Int64_obj,_and,return )

::haxe::Int64 Int64_obj::_or( ::haxe::Int64 a,::haxe::Int64 b){
	HX_SOURCE_PUSH("Int64_obj::or")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",179)
	return ::haxe::Int64_obj::__new(::cpp::CppInt32___obj::_or(a->high,b->high),::cpp::CppInt32___obj::_or(a->low,b->low));
}


STATIC_HX_DEFINE_DYNAMIC_FUNC2(Int64_obj,_or,return )

::haxe::Int64 Int64_obj::_xor( ::haxe::Int64 a,::haxe::Int64 b){
	HX_SOURCE_PUSH("Int64_obj::xor")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",183)
	return ::haxe::Int64_obj::__new(::cpp::CppInt32___obj::_xor(a->high,b->high),::cpp::CppInt32___obj::_xor(a->low,b->low));
}


STATIC_HX_DEFINE_DYNAMIC_FUNC2(Int64_obj,_xor,return )

::haxe::Int64 Int64_obj::neg( ::haxe::Int64 a){
	HX_SOURCE_PUSH("Int64_obj::neg")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",188)
	::cpp::CppInt32__ high = ::cpp::CppInt32___obj::complement(a->high);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",189)
	::cpp::CppInt32__ low = ::cpp::CppInt32___obj::neg(a->low);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",190)
	if ((::cpp::CppInt32___obj::isZero(low))){
		HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",191)
		high = ::cpp::CppInt32___obj::add(high,::cpp::CppInt32___obj::ofInt((int)1));
	}
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",192)
	return ::haxe::Int64_obj::__new(high,low);
}


STATIC_HX_DEFINE_DYNAMIC_FUNC1(Int64_obj,neg,return )

bool Int64_obj::isNeg( ::haxe::Int64 a){
	HX_SOURCE_PUSH("Int64_obj::isNeg")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",195)
	return ::cpp::CppInt32___obj::isNeg(a->high);
}


STATIC_HX_DEFINE_DYNAMIC_FUNC1(Int64_obj,isNeg,return )

bool Int64_obj::isZero( ::haxe::Int64 a){
	HX_SOURCE_PUSH("Int64_obj::isZero")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",199)
	return ::cpp::CppInt32___obj::isZero(::cpp::CppInt32___obj::_or(a->high,a->low));
}


STATIC_HX_DEFINE_DYNAMIC_FUNC1(Int64_obj,isZero,return )

int Int64_obj::compare( ::haxe::Int64 a,::haxe::Int64 b){
	HX_SOURCE_PUSH("Int64_obj::compare")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",204)
	int v = ::cpp::CppInt32___obj::compare(a->high,b->high);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",205)
	return (  (((v != (int)0))) ? int(v) : int(::cpp::CppInt32___obj::ucompare(a->low,b->low)) );
}


STATIC_HX_DEFINE_DYNAMIC_FUNC2(Int64_obj,compare,return )

int Int64_obj::ucompare( ::haxe::Int64 a,::haxe::Int64 b){
	HX_SOURCE_PUSH("Int64_obj::ucompare")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",212)
	int v = ::cpp::CppInt32___obj::ucompare(a->high,b->high);
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",213)
	return (  (((v != (int)0))) ? int(v) : int(::cpp::CppInt32___obj::ucompare(a->low,b->low)) );
}


STATIC_HX_DEFINE_DYNAMIC_FUNC2(Int64_obj,ucompare,return )

::String Int64_obj::toStr( ::haxe::Int64 a){
	HX_SOURCE_PUSH("Int64_obj::toStr")
	HX_SOURCE_POS("/usr/lib/haxe/std/haxe/Int64.hx",216)
	return a->toString();
}


STATIC_HX_DEFINE_DYNAMIC_FUNC1(Int64_obj,toStr,return )


Int64_obj::Int64_obj()
{
}

void Int64_obj::__Mark(HX_MARK_PARAMS)
{
	HX_MARK_BEGIN_CLASS(Int64);
	HX_MARK_MEMBER_NAME(high,"high");
	HX_MARK_MEMBER_NAME(low,"low");
	HX_MARK_END_CLASS();
}

void Int64_obj::__Visit(HX_VISIT_PARAMS)
{
	HX_VISIT_MEMBER_NAME(high,"high");
	HX_VISIT_MEMBER_NAME(low,"low");
}

Dynamic Int64_obj::__Field(const ::String &inName,bool inCallProp)
{
	switch(inName.length) {
	case 2:
		if (HX_FIELD_EQ(inName,"or") ) { return _or_dyn(); }
		break;
	case 3:
		if (HX_FIELD_EQ(inName,"add") ) { return add_dyn(); }
		if (HX_FIELD_EQ(inName,"sub") ) { return sub_dyn(); }
		if (HX_FIELD_EQ(inName,"mul") ) { return mul_dyn(); }
		if (HX_FIELD_EQ(inName,"div") ) { return div_dyn(); }
		if (HX_FIELD_EQ(inName,"mod") ) { return mod_dyn(); }
		if (HX_FIELD_EQ(inName,"shl") ) { return shl_dyn(); }
		if (HX_FIELD_EQ(inName,"shr") ) { return shr_dyn(); }
		if (HX_FIELD_EQ(inName,"and") ) { return _and_dyn(); }
		if (HX_FIELD_EQ(inName,"xor") ) { return _xor_dyn(); }
		if (HX_FIELD_EQ(inName,"neg") ) { return neg_dyn(); }
		if (HX_FIELD_EQ(inName,"low") ) { return low; }
		break;
	case 4:
		if (HX_FIELD_EQ(inName,"make") ) { return make_dyn(); }
		if (HX_FIELD_EQ(inName,"ushr") ) { return ushr_dyn(); }
		if (HX_FIELD_EQ(inName,"high") ) { return high; }
		break;
	case 5:
		if (HX_FIELD_EQ(inName,"ofInt") ) { return ofInt_dyn(); }
		if (HX_FIELD_EQ(inName,"toInt") ) { return toInt_dyn(); }
		if (HX_FIELD_EQ(inName,"isNeg") ) { return isNeg_dyn(); }
		if (HX_FIELD_EQ(inName,"toStr") ) { return toStr_dyn(); }
		break;
	case 6:
		if (HX_FIELD_EQ(inName,"getLow") ) { return getLow_dyn(); }
		if (HX_FIELD_EQ(inName,"divMod") ) { return divMod_dyn(); }
		if (HX_FIELD_EQ(inName,"isZero") ) { return isZero_dyn(); }
		break;
	case 7:
		if (HX_FIELD_EQ(inName,"ofInt32") ) { return ofInt32_dyn(); }
		if (HX_FIELD_EQ(inName,"getHigh") ) { return getHigh_dyn(); }
		if (HX_FIELD_EQ(inName,"compare") ) { return compare_dyn(); }
		break;
	case 8:
		if (HX_FIELD_EQ(inName,"ucompare") ) { return ucompare_dyn(); }
		if (HX_FIELD_EQ(inName,"toString") ) { return toString_dyn(); }
	}
	return super::__Field(inName,inCallProp);
}

Dynamic Int64_obj::__SetField(const ::String &inName,const Dynamic &inValue,bool inCallProp)
{
	switch(inName.length) {
	case 3:
		if (HX_FIELD_EQ(inName,"low") ) { low=inValue.Cast< ::cpp::CppInt32__ >(); return inValue; }
		break;
	case 4:
		if (HX_FIELD_EQ(inName,"high") ) { high=inValue.Cast< ::cpp::CppInt32__ >(); return inValue; }
	}
	return super::__SetField(inName,inValue,inCallProp);
}

void Int64_obj::__GetFields(Array< ::String> &outFields)
{
	outFields->push(HX_CSTRING("high"));
	outFields->push(HX_CSTRING("low"));
	super::__GetFields(outFields);
};

static ::String sStaticFields[] = {
	HX_CSTRING("make"),
	HX_CSTRING("ofInt"),
	HX_CSTRING("ofInt32"),
	HX_CSTRING("toInt"),
	HX_CSTRING("getLow"),
	HX_CSTRING("getHigh"),
	HX_CSTRING("add"),
	HX_CSTRING("sub"),
	HX_CSTRING("mul"),
	HX_CSTRING("divMod"),
	HX_CSTRING("div"),
	HX_CSTRING("mod"),
	HX_CSTRING("shl"),
	HX_CSTRING("shr"),
	HX_CSTRING("ushr"),
	HX_CSTRING("and"),
	HX_CSTRING("or"),
	HX_CSTRING("xor"),
	HX_CSTRING("neg"),
	HX_CSTRING("isNeg"),
	HX_CSTRING("isZero"),
	HX_CSTRING("compare"),
	HX_CSTRING("ucompare"),
	HX_CSTRING("toStr"),
	String(null()) };

static ::String sMemberFields[] = {
	HX_CSTRING("high"),
	HX_CSTRING("low"),
	HX_CSTRING("toString"),
	String(null()) };

static void sMarkStatics(HX_MARK_PARAMS) {
};

static void sVisitStatics(HX_VISIT_PARAMS) {
	HX_VISIT_MEMBER_NAME(Int64_obj::__mClass,"__mClass");
};

Class Int64_obj::__mClass;

void Int64_obj::__register()
{
	Static(__mClass) = hx::RegisterClass(HX_CSTRING("haxe.Int64"), hx::TCanCast< Int64_obj> ,sStaticFields,sMemberFields,
	&__CreateEmpty, &__Create,
	&super::__SGetClass(), 0, sMarkStatics, sVisitStatics);
}

void Int64_obj::__boot()
{
}

} // end namespace haxe
